import { Exclude } from "class-transformer";
import { IsEnum, IsInt, IsOptional, IsString } from "class-validator";
import { UserStatus } from "@common/enums/business-code.enum";
import { PartialType } from "@nestjs/mapped-types";

export class UserDto {
  avatar?: string; // 头像
  createName?: string; // 创建人姓名
  createId?: number; // 创建人id
  createTime?: Date; // 创建时间
  // 隐藏敏感字段
  @Exclude()
  password?: string; // 密码
  realname?: string; // 用户真实姓名
  username?: string; // 用户名/登录账号
  userId?: number; // 用户 ID
  userRole?: string; // 用户角色
  updateName?: string; // 更新人姓名
  updateId?: number; // 更新人id
  updateTime?: Date; // 更新时间
  status?: number; // 账号状态0删除1正常2禁用
}

export class UpdateUserDto extends PartialType(UserDto) {}

export class SearchUserDto {
  @IsOptional()
  @IsInt()
  page: number = 1;

  @IsOptional()
  @IsInt()
  pageSize: number = 10;

  @IsOptional()
  @IsString()
  username?: string; // 新增用户名筛选条件

  @IsOptional()
  @IsEnum(UserStatus)
  status?: UserStatus; // 新增状态筛选条件
}
